package com.wu.constant;

public class RedisCacheKey {

    /***
     * 区域对应偏好 标签源数据
     */
    public static final String PREFERENCE_TAG_REGION_CHANNEL = "reco:tag:preference:%s:%s";
    public static String getPreferenceTag(String region,String channel) {
		return String.format(PREFERENCE_TAG_REGION_CHANNEL, region,channel);
    }
    /****
     * 偏好设置 标签对应歌手源数据
     */
    public static final String PREFERENCE_TAG_ACTORS = "reco:preference:tag_actors:{%s}";
    public static String getPreferenceActor(String tagId) {
		return String.format(PREFERENCE_TAG_ACTORS,tagId);
    }
    /****
     * 偏好设置 歌手打底数据
     */
    public static final String PREFERENCE_BASE_ACTOR = "reco:preference:{base_actor}";
    public static String getPreferenceBaseActor() {
    	return String.format(PREFERENCE_BASE_ACTOR);
    }

	/********************************************10.11 听书相关缓存key***************************************************/
    //听书首页tab缓存key
    public static final String LISTENBOOK_TAB_REGION_CHANNEL = "reco:listenbook:tab:%s:%s";
    public static String getListenBookTabsKey(String region,String channel) {
    	return String.format(LISTENBOOK_TAB_REGION_CHANNEL, region, channel);
    }
    //听书tab金刚区缓存key
    public static final String LISTENBOOK_TAB_KINGKONG_REGION_CHANNEL = "reco:listenbook:kingkong:%s:%s:%s";
    public static String getListenBookTabKingKongsKey(String region,String channel,Long tabId) {
    	return String.format(LISTENBOOK_TAB_KINGKONG_REGION_CHANNEL, region, channel,tabId);
    }
    //听书Tab下所有一级栏目缓存key
    public static final String LISTENBOOK_TAB_ALL_CATALOG_REGION_CHANNEL = "reco:listenbook:all:catalog:%s:%s:%s";
    public static String getListenBookTabAllCatalogsKey(String region,String channel,Long tabId) {
    	return String.format(LISTENBOOK_TAB_ALL_CATALOG_REGION_CHANNEL, region, channel,tabId);
    }
    //栏目下所有二级栏目缓存key
    public static final String LISTENBOOK_SUB_CATALOG_REGION_CHANNEL = "reco:listenbook:sub:catalog:%s:%s:%s";
    public static String getListenBookSubCatalogsKey(String region,String channel,Long labelId) {
    	return String.format(LISTENBOOK_SUB_CATALOG_REGION_CHANNEL, region, channel,labelId);
    }
    //栏目专辑数据缓存key
    public static final String LISTENBOOK_CATALOG_RESOURCE_REGION_CHANNEL = "reco:listenbook:catalog:resource:%s:%s:%s";
    public static String getListenBookCatalogResourcesKey(String region,String channel,Long labelId) {
    	return String.format(LISTENBOOK_CATALOG_RESOURCE_REGION_CHANNEL, region, channel,labelId);
    }
    //听书专辑打底数据缓存key
    public static final String LISTENBOOK_RESOURCE_BASE_REGION_CHANNEL = "reco:podcast:base_data:%s:{%s}";
    public static String getListenBookBaseResourcesKey(String region,String channel) {
    	return String.format(LISTENBOOK_RESOURCE_BASE_REGION_CHANNEL, region, channel);
    }
    //听书专辑相似数据缓存key
    public static final String LISTENBOOK_PODCAST_SIMILAR_REGION_CHANNEL = "reco:podcast:similarv2:%s:%s:%s";
    public static String getListenBookPodcastSimilarKey(String region,String channel,Long albumId) {
    	return String.format(LISTENBOOK_PODCAST_SIMILAR_REGION_CHANNEL, region, channel,albumId);
    }

	// 听书二级广场页栏目缓存key
	public static final String PODCAST_SECOND_CATALOG = "reco:psc:%s:%s";
	public static String getPodcastSecondCatalogKey(String region, String channel) {
		return String.format(PODCAST_SECOND_CATALOG, region, channel);
	}

/**************************************************10.11 结束***************************************************/   

	/***
	 * 打底歌曲缓存key
	 */
    public final static String BASESONG_REGION_CHANNEL_KEY = "reco:{song}:basev1:%s:%s";
    public static String getBaseSongKey(String region,String channel) {
    	return String.format(BASESONG_REGION_CHANNEL_KEY, region,channel);
    }
     /**
     * 打底歌曲v2缓存key
     */
    public final static String BASESONG_REGION_CHANNEL_KEY_V2 = "reco:{song}:base:v2:%s:%s";
    public static String getBaseSongV2Key(String region,String channel) {
    	return String.format(BASESONG_REGION_CHANNEL_KEY_V2, region,channel);
    }
    public final static String BASESONG_REGION_CHANNEL_KEY_TAG_V2 = "reco:{song}:tag:v2:%s:%s";
    public static String getBaseSongTagV2Key(String region,String channel) {
    	return String.format(BASESONG_REGION_CHANNEL_KEY_TAG_V2, region,channel);
    }

    /***
     * 歌单打底缓存key
     */
    public final static String BASEPLAYLIST_KEY = "reco:{playlist}:basev1:%s:%s";
    public static String getBasePlayListKey(String region,String channel) {
    	return String.format(BASEPLAYLIST_KEY, region,channel);
    }
    //特殊query词查询
    public final static String SPECIAL_SONG_REGION_CHANNEL_KEY = "reco:{song}:special:%s:%s:%s";
    public static String getSpecialSongKey(String region,String channel,Integer type) {
    	return String.format(SPECIAL_SONG_REGION_CHANNEL_KEY, region,channel,type);
    }


    /**
     * 歌单推荐缓存key格式
     */
    public static final String PLAYLIST_FORMAT = "reco:userPlist:%s:%s:{%s}";

    /**
     * 歌单推荐缓存key
     *
     * @param region
     * @param channel
     * @param pid
     * @return
     */
    public static String getPlaylists(String region, String channel, String pid) {
        return String.format(PLAYLIST_FORMAT, region, channel, pid);
    }

    /**
     * 私人专属好歌推荐位置信息key格式
     */
    public static final String PERSONAL_SONG_FORMAT = "reco:perS:%s:%s:{%s}";

    /**
     * 私人专属歌单推荐位置信息key格式
     */
    public static final String PERSONAL_PLAYLIST_FORMAT = "reco:perP:%s:%s:{%s}";

    /**
     * 获取首页合并推荐请求缓存key（私人专属好歌、私人专属歌单）
     * @param baseKey
     * @param region
     * @param channel
     * @param uid
     * @return
     */
    public static String getHomePersonalKey(String baseKey, String region, String channel, String uid) {
        return String.format(baseKey, region, channel, uid);
    }

    /**************************************************************************************/
    public final static String DETAIN_PRE = "reco:detain:";
    public static String getDetainPre(String channel, String region) {
        return DETAIN_PRE + channel + ":" + region;
    }

    public final static String DETAIN_SORT_PRE = "reco:detain:sort:";
    public static String getDetainSortPre(String channel, String region) {
        return DETAIN_SORT_PRE + channel + ":" + region;
    }

    /****
     * 每日推荐
     */
    private static final String DAILY_SONG = "reco:dailysong:%s:%s:{%s}";
    public static String getDailySongKey(String region, String channel, String uid) {
    	return String.format(DAILY_SONG, region,channel,uid);
    }

    /**
     * 歌曲的相似歌曲
     * @param songId
     * @return
     */
    private static final String SONG_SIMILAR = "reco:similarSong:%s:%s:{%s}";
    public static String getSimilarSongsKey(String region, String channel, String songId) {
    	return String.format(SONG_SIMILAR, region, channel, songId);
    }
    
    /**
     * 猜你喜欢
     * @param songId
     * @return
     */
    private static final String GUESS_YOUR_LIKE = "reco:yourlike:%s:%s:{%s}";
    public static String getYourLikeKey(String region, String channel, String uid) {
    	return String.format(GUESS_YOUR_LIKE, region, channel, uid);
    }

    /**
     * 歌曲的推荐歌单缓存keu
     * @param songId
     * @return
     */
    public static String getLikelyPlaylistKey(String songId) {
        return "reco:likelyPlaylist:{" + songId + "}";
    }

    /****
     * 每日推荐v2
     */
    private static final String DAILY_SONG_V2 = "reco:dailysongv2:%s:%s:{%s}";
    public static String getDailySongKeyV2(String region, String channel, String uid) {
    	return String.format(DAILY_SONG_V2, region, channel, uid);
    }

    private static final String LIKELY_PREFIX = "reco:likely";
    public static String similarSonglistKey(String playlistId) {
    	return LIKELY_PREFIX + ":similarSonglist2:" + "{" + playlistId + "}";
    }

    private static final String FM_RADIO = "reco:fm:";
    public static String getLikeRadioKey(String uid) {
        return FM_RADIO + "{" + uid + "}";
    }

    private static final String BLOCK_PREFIX = "reco:block";
    public static String getBlockSongKey(String uid) {
        return BLOCK_PREFIX + ":song:" + "{" + uid + "}";
    }

    public static String similarSonglistTopKey(String channel,String region) {
        return LIKELY_PREFIX + ":similarSonglist2:" + "top"+":"+channel+":"+region;
    }

    /***
     * 用户暗词缓存key
     */
    public static final String CRYPTIC_WORDS = "reco:crypticwords:%s:%s:{%s}";
    public static String getCrypticWords(String region,String channel,String uid) {
    	return String.format(CRYPTIC_WORDS, region,channel,uid);
    }

/*******************************************10.13***********************************************/
    /****
     * 二级频道tab数据缓存key
     */
    private static final String TAB_SONG = "reco:tabSong:%s:%s:%s";
    public static String tabSongKey(String region,String channel,Long tabId) {
    	return String.format(TAB_SONG, region,channel,tabId);
    }
    /****
     * 二级频道用户数据缓存key
     */
    private static final String RECO_USER_TAB_SONG = "reco:tabSong:%s:%s:%s:{%s}";
    public static String getUserTabSongKey(String region,String channel,Integer tabId,String uid) {
    	return String.format(RECO_USER_TAB_SONG, region,channel,tabId,uid);
    }
    /****
     * 二级频道用户tab位置缓存
     */
    private static final String RECO_USER_TAB_POSITION = "reco:tp:%s:%s:%s:{%s}";
	public static String getUserTabPositionKey(String region, String channel, Integer tabId, String uid) {
		return String.format(RECO_USER_TAB_POSITION, region, channel, tabId, uid);
	}

    /****
     * 听歌识曲数据缓存key
     */
    private static final String IDENTIFY_SONG_RANK = "reco:identifySongRank:%s:%s";
    public static String identifySongRankKey(String region,String channel) {
    	return String.format(IDENTIFY_SONG_RANK, region,channel);
    }
    //用户圈包集合
    public static final String ENCIRCLE_LIST = "sms:encircle:%s";
    public static String getEncircl(int slice) {
    	return String.format(ENCIRCLE_LIST,slice);
    }
    //圈包bloomfilter
    private static final String ENCIRCLE_PRIFX = "sms:encircle:{s_%s}:%s";
    public static String getEncirclePrifx(int slice,Object packageId) {
    	return String.format(ENCIRCLE_PRIFX,slice, packageId);
    }

    private final static String AB_BLOOM_KEY_V2 = "reco:ab:{%s}:%s:%s";
    public static String getAbBloomKey(int slice,String abKey, String groupValue) {
    	return String.format(AB_BLOOM_KEY_V2, slice, abKey, groupValue);
    }

    /**
     * 用户ab分组缓存
     */
    private final static String AB_USER_CACHE_KEY = "reco:ab:{%s}";
    public static String getUserAbCacheKey(String pid){
        return String.format(AB_USER_CACHE_KEY, pid);
    }

	/****
	 * 本地push场景缓存
	 */
	private final static String LOCAL_PUSH_SCENE = "reco:localpush:scene:%s:%s";
	public static String getLocalPushSceneKey(String region, String channel) {
		return String.format(LOCAL_PUSH_SCENE, region, channel);
	}

	/****
	 * 场景对应本地push列表
	 */
	private final static String LOCAL_PUSH_LIST = "reco:localpush:list:%s:%s:%s";
	public static String getLocalPushListKey(String region, String channel, Long sceneid) {
		return String.format(LOCAL_PUSH_LIST, region, channel, sceneid);
	}
	
	/****
	 * 获取规则所有一级标签缓存key
	 */
	private final static String RECO_RULE_TAG = "reco:ruletag:%s:%s";
	public static String getRecoRuleTagKey(String region, String channel) {
		return String.format(RECO_RULE_TAG, region, channel);
	}
	/****
	 * 用户听歌报告
	 */
	private final static String RECO_USER_ANNUAL_REPORT = "reco:userAr:%s:%s:{%s}";
	public static String getUserAnnualReportKey(String region, String channel, String uid) {
		return String.format(RECO_USER_ANNUAL_REPORT, region, channel, uid);
	}
	/****
	 * 用户弹窗规则
	 */
	private final static String RECO_USER_RULE = "reco:userRule:%s:%s:{%s}";
	public static String getUserRuleKey(String region, String channel, String uid) {
		return String.format(RECO_USER_RULE, region, channel, uid);
	}

    /**
     * 推荐标签
     */
    private final static String RECO_LABEL = "reco:labels:%s:%s";
    public static String getRecoLabelCacheKey(String region, String channel){
        return String.format(RECO_LABEL, region, channel);
    }

	/****
	 * 用户banner
	 */
	private final static String RECO_USER_BANNER = "reco:userBanner:%s:%s:{%s}";
	public static String getUserBannerKey(String region, String channel, String uid) {
		return String.format(RECO_USER_BANNER, region, channel, uid);
	}

	/****
	 * banner精品池
	 */
	private final static String RECO_ALL_BANNER = "reco:banner:all:%s:%s";
	public static String getAllBanner(String region, String channel) {
		return String.format(RECO_ALL_BANNER, region, channel);
	}

	/****
	 * 人工干预banner
	 */
	private final static String RECO_INTENTION_BANNER = "reco:banner:intention:%s:%s";
	public static String getIntentionBanner(String region, String channel) {
		return String.format(RECO_INTENTION_BANNER, region, channel);
	}

	/****
	 * 打底banner
	 */
	private final static String RECO_BASE_BANNER = "reco:banner:base:%s:%s";
	public static String getBaseBanner(String region, String channel) {
		return String.format(RECO_BASE_BANNER, region, channel);
	}

    /******************************10.15**********************************/
    public final static String USER_BLOCK_SONG_CACHE_KEY = "reco:userBlock:song:%s:%s:{%s}";
    public static String getUserBlockSongCacheKey(String uid, String region, String channel){
        return String.format(USER_BLOCK_SONG_CACHE_KEY, region, channel, uid);
    }

    // 用户视频黑名单
    public final static String USER_BLOCK_VIDEO_CACHE_KEY = "reco:userBlock:video:%s:%s:{%s}";
    public static String getUserBlackVideoCacheKey(String uid, String region, String channel) {
        return String.format(USER_BLOCK_VIDEO_CACHE_KEY, region, channel, uid);
    }

    /**
     * 电台所有数据缓存key
     */
    public static final String RECO_RADIO_MUSIC_STR = "reco:radioSong:{%s}";
    public static String getRadioSongCacheKey(String radioId){
        return String.format(RECO_RADIO_MUSIC_STR, radioId);
    }

    public static final String RECO_RADIO_MUSIC_GROUP = "reco:radio:Group:{%s}";
    public static String getRadioSongGroupCacheKey(String radioId){
        return String.format(RECO_RADIO_MUSIC_GROUP, radioId);
    }

    public static final String RECO_RADIO_USER_LAST = "reco:radio:user:lastId:%s:{%s}";
    public static String getRadioUserLastId(String radioId, String uid){
        return String.format(RECO_RADIO_USER_LAST, radioId, uid);
    }

    public static final String RECO_USER_INFO_CACHE_KEY = "reco:userInfo:%s:%s:{%s}";
    public static String getUserInfoCacheKey(String region, String channel, String uid){
        return String.format(RECO_USER_INFO_CACHE_KEY, region, channel, uid);
    }

    /***
     * 用户听书栏目位置缓存key
     */
    public static final String RECO_USER_PODCAST_POSITION_KEY = "reco:userPodcast:%s:%s:{%s}";
    public static String getUserPodcastPositionCacheKey(String region, String channel, String uid){
    	return String.format(RECO_USER_PODCAST_POSITION_KEY, region, channel, uid);
    }

    /****
     * 全量二级频道tab缓存key
     */
	public static final String HOME_TAB_ALL = "reco:alltab:%s:%s";
	public static String getHomeAllTabCacheKey(String region, String channel) {
		return String.format(HOME_TAB_ALL, region, channel);
	}

	/****
	 * 人工干预二级频道tab缓存key
	 */
	public static final String HOME_TAB_INTENTION = "reco:inttab:%s:%s";
	public static String getHomeIntentionTabCacheKey(String region, String channel) {
		return String.format(HOME_TAB_INTENTION, region, channel);
	}

	/****
	 * 用户二级频道
	 */
	private final static String RECO_USER_TAB = "reco:userTab:%s:%s:{%s}";
	public static String getUserTabKey(String region, String channel, String uid) {
		return String.format(RECO_USER_TAB, region, channel, uid);
	}
	/*******************************************algoConfig**************************************************/
	private final static String RECO_ALGO_CONF = "reco:algoConf:%s:%s";
	public static String getAlgoConfKey(String region, String channel) {
		return String.format(RECO_ALGO_CONF, region, channel);
	}
	/*********************************************************************************************/

	// 用户首页视频瀑布流数据缓存key
	public final static String RECO_USER_VIDEO_FEED_KEY = "reco:videofeed:%s:%s:{%s}";
	public static String getUserVideoFeedKey(String uid, String region, String channel) {
		return String.format(RECO_USER_VIDEO_FEED_KEY, region, channel, uid);
	}

	// 用户首页视频瀑布流位置缓存key
	public final static String RECO_USER_VIDEO_POSITION_KEY = "reco:vPoition:%s:%s:{%s}";
	public static String getUserVideoPositionKey(String uid, String region, String channel) {
		return String.format(RECO_USER_VIDEO_POSITION_KEY, region, channel, uid);
	}

    /****
     * 用户youtub视频瀑布流上一次数据位置
     */
	public final static String RECO_FEED_USER_LOCATION = "reco:feed:location:%s:{%s}:%s";
	public static String getUserLastTimeLocation(String region, String uid, Integer code) {
		return String.format(RECO_FEED_USER_LOCATION, region, uid, code);
	}

    /**
     * 猜你喜欢
     * @param songId
     * @return
     */
	public final static String RECO_GUESS_YOUR_LIKE = "reco：user:like:%s:%s:{%s}";
    public static String getGuessYourLike(String region, String channel, String uid) {
    	return String.format(RECO_GUESS_YOUR_LIKE, region, channel, uid);
    }
/*****************************************搜索相关缓存key****************************************************/

    /****
     * 搜索配置缓存key
     */
    private final static String SEARCH_PARAM_CONF = "reco:searchParamConf:v1";
    public static String getSearchParamConfKey() {
        return SEARCH_PARAM_CONF;
    }


    /**
     * 歌曲缓存
     */
    private static final String MUSIC_NAME_SPACE = "es:mc_v2:{%s}";
    public static String getMusicNameSpaceKey(String md5) {
        return String.format(MUSIC_NAME_SPACE, md5);
    }

    /**
     * 歌曲总量缓存
     */
    private static final String MUSIC_NAME_SPACE_TOTAL = "es:mc_v2:tl:{%s}";
    public static String getMusicNameSpaceTotalKey(String md5) {
        return String.format(MUSIC_NAME_SPACE_TOTAL, md5);
    }

    /**
     * 歌曲歌词缓存
     */
    private static final String MUSIC_NAME_SPACE_LYRIC = "es:mc_v2:lc:{%s}";
    public static String getMusicNameSpaceLyricKey(String md5) {
        return String.format(MUSIC_NAME_SPACE_LYRIC, md5);
    }

    /**
     * 人工干预缓存
     */
    private static final String ES_TYPEKEY = "search:intention:resource:es_type:{%s}";
    public static String getEsTypeKey( String type) {
        return String.format(ES_TYPEKEY,  type);
    }

    // 外部合作歌曲搜索缓存key
    private static final String MUSIC_NAME_OUT_SPACE = "es:song:out:{%s}";
    public static String getMusicNameOutSpaceKey(String md5) {
        return String.format(MUSIC_NAME_OUT_SPACE, md5);
    }

    // 外部合作歌曲总数搜索缓存key
    private static final String MUSIC_NAME_OUT_SPACE_TOTAL = "es:song:out:tl:{%s}";
    public static String getMusicNameOutSpaceTotalKey(String md5) {
        return String.format(MUSIC_NAME_OUT_SPACE_TOTAL, md5);
    }

    /**
     * 歌手缓存
     */
    private static final String ACOTOR_NAME_SPACE = "es:at_v2:{%s}";
    public static String getActorNameSpaceKey(String md5) {
        return String.format(ACOTOR_NAME_SPACE, md5);
    }

    /**
     * 歌手总量缓存
     */
    private static final String ACOTOR_NAME_SPACE_TOTAL = "es:at_v2:tl:{%s}";
    public static String getActorNameSpaceTotalKey(String md5) {
        return String.format(ACOTOR_NAME_SPACE_TOTAL, md5);
    }

    /**
     * 专辑缓存
     */
    private static final String ALBUM_NAME_SPACE = "es:am_v2:{%s}";
    public static String getAlbumNameSpaceKey(String md5) {
        return String.format(ALBUM_NAME_SPACE, md5);
    }

    /**
     * 专辑总量缓存
     */
    private static final String ALBUM_NAME_SPACE_TOTAL = "es:am_v2:tl:{%s}";
    public static String getAlbumNameSpaceTotalKey(String md5) {
        return String.format(ALBUM_NAME_SPACE_TOTAL, md5);
    }

    /**
     * 歌单缓存
     */
    private static final String PLAYLIST_NAME_SPACE = "es:pl_v2:{%s}";
    public static String getPlaylistNameSpaceKey(String md5) {
        return String.format(PLAYLIST_NAME_SPACE, md5);
    }

    /**
     * 歌单总量缓存
     */
    private static final String PLAYLIST_NAME_SPACE_TOTAL = "es:pl_v2:tl:{%s}";
    public static String getPlaylistNameSpaceTotalKey(String md5) {
        return String.format(PLAYLIST_NAME_SPACE_TOTAL, md5);
    }

    /**
     * 联想词缓存
     */
    private static final String SUGGEST_NAME_SPACE = "es:sg_v1:{%s}";
    public static String getSuggestNameSpaceKey(String md5) {
        return String.format(SUGGEST_NAME_SPACE, md5);
    }

    private static final String DISLIKE_SUGGEST_NAME_SPACE = "es:dl_v1:{%s}";
    public static String getDislikeSuggestNameSpaceKey(String md5) {
        return String.format(DISLIKE_SUGGEST_NAME_SPACE, md5);
    }

    /**
     * 视频缓存
     */
    private static final String VIDEO_NAME_SPACE = "es:vo_v2:{%s}";
    public static String getVideoNameSpaceKey(String md5) {
        return String.format(VIDEO_NAME_SPACE, md5);
    }

    /**
     * 视频总量缓存
     */
    private static final String VIDEO_NAME_SPACE_TOTAL = "es:vo_v2:tl:{%s}";
    public static String getVideoNameSpaceTotalKey(String md5) {
        return String.format(VIDEO_NAME_SPACE_TOTAL, md5);
    }

    /**
     * 听书缓存
     */
    private static final String PODCAST_ALBUM_NAME_SPACE="es:ts_v2:{%s}";
    public static String getPodcastNameSpaceKey(String md5) {
        return String.format(PODCAST_ALBUM_NAME_SPACE, md5);
    }

    /**
     * 听书总量缓存
     */
    private static final String PODCAST_ALBUM_NAME_SPACE_TOTAL="es:ts_v2:tl:{%s}";
    public static String getPodcastNameSpaceTotalKey(String md5) {
        return String.format(PODCAST_ALBUM_NAME_SPACE_TOTAL, md5);
    }

    /**
     * 彩铃缓存
     */
    private static final String CRBT_NAME_SPACE="es:cl_v2:{%s}";
    public static String getCrbtNameSpaceKey(String md5) {
        return String.format(CRBT_NAME_SPACE, md5);
    }

    /**
     * 彩铃总量缓存
     */
    private static final String CRBT_NAME_NAME_SPACE_TOTAL="es:cl_v2:tl:{%s}";
    public static String getCrbtNameSpaceTotalKey(String md5) {
        return String.format(CRBT_NAME_NAME_SPACE_TOTAL, md5);
    }

    /**
     * 综搜缓存
     */
    private static final String SYNTHETICAL_SPACE = "es:sy_v4:{%s}";
    public static String getSyntheticalSpaceKey(String md5) {
        return String.format(SYNTHETICAL_SPACE, md5);
    }

    private static final String SEARCH_USER_LABEL = "es:label_v1:{%s}";
    public static String getUserLabelKey(String uid) {
        return String.format(SEARCH_USER_LABEL, uid);
    }


}
